/**
 * 用于进行页面访问权限的拦截处理
 */
import router from './router'
import store from './store'
import { getUserInfo } from './api/mine'
import { showFailToast } from 'vant'

// 全局前置守卫
router.beforeEach(async(to, from ) => {
    //to: 即将进入的目标路由
    //from: 正在离开的当前路由

    //判断进入的目标页面是否需要登录权限
    if( to.meta.needLogin ) {  //需要登录后才能访问
        //获取用户登录的 token 如果有,则说明用户已登录,否则未登录
        const token = store.getters['user/token']
        if(!token){    //未登录,跳转到登录页面
            showFailToast('请先登录')
            return {
                path: '/login',
                query: {    //在路径中添加查询字符串参数,以便于登录后跳转回当前页面
                    redirect: to.fullPath,
                }
            }
        } else {
            const userInfo = store.getters['user/userInfo']
            //在有 token 的情况下(说明用户已登录),但刷新时没有用户基本信息了,
            //则重新查询用户基本信息保存到 store 的 state 状态数据中
            if(!userInfo){
                const { userInfo } = await getUserInfo()
                store.commit('user/SET_USERINFO', userInfo)
            }
        }

    }
})